package com.xuelang.pipeline.client.pipeline.enums;

/**
 * 流水线通用变量枚举类-每个流水线模板、每条流水线都有这些变量，且每个流水线模板、每条流水线都可以覆盖这些变量。
 *
 * @author xiwen.zxg
 * @since 2024/6/27
 */
public enum PipelineInternalVariableEnum {

    /**
     * 域名
     */
    VARIABLE_DOMAIN("域名", "{{domain}}", "http://www.baidu.com"),
    /**
     * 端口
     */
    VARIABLE_PORT("端口", "{{port}}", "8080"),
    /**
     * CPU(核心数)
     */
    VARIABLE_CPU("CPU(核心数)", "{{cpu}}", "8"),
    /**
     * 内存(GB)
     */
    VARIABLE_MEMORY("内存(GB)", "{{memory}}", "16"),
    /**
     * 部署环境
     */
    VARIABLE_DEPLOY_ENV("部署环境", "{{componentDeployEnv}}", "prod,dev,test,emulate,pre"),
    /**
     * 代码源TOKEN
     */
    VARIABLE_CODE_TOKEN("代码源TOKEN", "{{componentCodeToken}}", ""),
    /**
     * 代码源地址
     */
    VARIABLE_CODE_REPOSITORY("代码源地址", "{{componentCodeRepository}}", "http://www.baidu.com/test.git"),
    /**
     * 代码分支
     */
    VARIABLE_CODE_BRANCH("代码分支", "{{componentCodeBranch}}", "master,slave,release,snapshot");

    /**
     * 变量名称
     */
    private final String name;
    /**
     * 变量值选项，如：1,2,3
     */
    private final String valueOption;
    /**
     * 变量默认值，如：1
     */
    private final String defaultValue;

    /**
     * 构造函数
     *
     * @param name 变量名称
     * @param defaultValue  变量默认值，如：1
     * @param valueOption   变量值选项，如：1,2,3
     */
    PipelineInternalVariableEnum(String name, String defaultValue, String valueOption) {
        this.name = name;
        this.valueOption = valueOption;
        this.defaultValue = defaultValue;
    }

}
